// 处理响应式

import observe from "./observe"

// 注意： value 也有可能是 对象/数组
function defineReactiveData(data, key, value) {
  // 重新观测
  observe(value)
  Object.defineProperty(data, key, {
    get() {
      console.log('响应式数据获取：', value)
      return value
    },
    set(newValue) {
      console.log('响应式数据设置', newValue)
      if (newValue === value)
        return
      // 考虑新值可能为 对象|数组
      observe(newValue)
      value = newValue
    }
  })
}

export default defineReactiveData